package com.smedi.ismedi.organization.core.application.service;

import com.smedi.ismedi.organization.core.application.command.HrOrgUpdateCommand;
import com.smedi.ismedi.organization.core.application.command.HrOrganizationCommand;
import com.smedi.ismedi.organization.core.application.command.SendMessageByJobCommand;
import com.smedi.ismedi.organization.core.application.command.SendMessageByRoleCommand;
import com.smedi.ismedi.organization.core.domain.aggregatemodel.HrOrganization;
import com.smedi.ismedi.organization.core.domain.aggregatemodel.SendMessage;

import java.util.List;

public interface HrOrgManageApplicationService {
    HrOrganization saveHrOrganization(HrOrganizationCommand hrOrganizationCommand);

    void deleteHrOrganization(Long orgId);

    Boolean checkHrOrganizationIsAvailable(Long orgId);

    Boolean checkHrOrganizationCanHasProjectAvailable(Long orgId);

    void exchangeTwoHrOrganizationNodeSort(HrOrganizationCommand hrOrganizationCommandPartOne, HrOrganizationCommand hrOrganizationCommandPartTwo);

    long updateHrOrgByShortName(HrOrgUpdateCommand hrOrgUpdateCommand);

    SendMessage sendMessageByRoleNotExists(SendMessageByRoleCommand sendMessageByRoleCommand);

    List<SendMessage> sendMessageByJobNotExists(SendMessageByJobCommand sendMessageByJobCommand);
}
